home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / os2 / pccts.zip / TUT1.G < prev    next >
Text File  |  1992-12-08  |  1KB  |  54 lines

  1. #header <<#include "charbuf.h">>
  2.  
  3. #token "[\t\ ]+"    << zzskip(); >>                /* Ignore White */
  4. #token "\n"         << zzline++; zzskip(); >>
  5. #token STRING "\"(~[\0-\0x1f\"\\]|(\\~[\0-\0x1f]))*\"" <<;>>
  6.  
  7. << main() { ANTLR(p(), stdin); } >>
  8.  
  9. p       :   ( func | "var" def ";" )*
  10.             "@"
  11.         ;
  12.  
  13. def     :   WORD
  14.         ;
  15.  
  16. func    :   WORD "\(" { def } "\)"
  17.             "\{"
  18.                 ( "var" def ";" )*
  19.                 ( statement )*
  20.             "\}"
  21.         ;
  22.  
  23. statement
  24.         :   expr ";"
  25.         |   "\{" ( statement )* "\}"
  26.         |   "if" "\(" expr "\)" statement {"else" statement}
  27.         |   "while" "\(" expr "\)" statement
  28.         |   "return" expr ";"
  29.         |   "print" expr ";"
  30.         ;
  31.  
  32. expr    :   WORD "=" expr
  33.         |   expr0
  34.         ;
  35.  
  36. expr0   :   expr1 ( ("==" | "!=") expr1 )*
  37.         ;
  38.  
  39. expr1   :   expr2 ( ("\+" | "\-") expr2 )*
  40.         ;
  41.  
  42. expr2   :   expr3 ( ( "\*" | "/" ) expr3 )*
  43.         ;
  44.  
  45. expr3   :   {"\-" } expr4
  46.         ;
  47.  
  48. expr4   :   STRING
  49.         |   WORD { "\(" { expr } "\)" }
  50.         |   "\(" expr "\)"
  51.         ;
  52.  
  53. #token WORD "[a-zA-Z]+"
  54.